home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / linux / qnx4_fs.h < prev    next >
C/C++ Source or Header  |  2005-10-13  |  4KB  |  153 lines

  1. /*
  2.  *  Name                         : qnx4_fs.h
  3.  *  Author                       : Richard Frowijn
  4.  *  Function                     : qnx4 global filesystem definitions
  5.  *  Version                      : 1.0.2
  6.  *  Last modified                : 2000-01-31
  7.  *
  8.  *  History                      : 23-03-1998 created
  9.  */
  10. #ifndef _LINUX_QNX4_FS_H
  11. #define _LINUX_QNX4_FS_H
  12.  
  13. #include <linux/qnxtypes.h>
  14.  
  15. #define QNX4_ROOT_INO 1
  16.  
  17. #define QNX4_MAX_XTNTS_PER_XBLK    60
  18. /* for di_status */
  19. #define QNX4_FILE_USED          0x01
  20. #define QNX4_FILE_MODIFIED      0x02
  21. #define QNX4_FILE_BUSY          0x04
  22. #define QNX4_FILE_LINK          0x08
  23. #define QNX4_FILE_INODE         0x10
  24. #define QNX4_FILE_FSYSCLEAN     0x20
  25.  
  26. #define QNX4_I_MAP_SLOTS    8
  27. #define QNX4_Z_MAP_SLOTS    64
  28. #define QNX4_SUPER_MAGIC    0x002f    /* qnx4 fs detection */
  29. #define QNX4_VALID_FS        0x0001    /* Clean fs. */
  30. #define QNX4_ERROR_FS        0x0002    /* fs has errors. */
  31. #define QNX4_BLOCK_SIZE         0x200    /* blocksize of 512 bytes */
  32. #define QNX4_BLOCK_SIZE_BITS    9    /* blocksize shift */
  33. #define QNX4_DIR_ENTRY_SIZE     0x040    /* dir entry size of 64 bytes */
  34. #define QNX4_DIR_ENTRY_SIZE_BITS 6    /* dir entry size shift */
  35. #define QNX4_XBLK_ENTRY_SIZE    0x200    /* xblk entry size */
  36. #define QNX4_INODES_PER_BLOCK   0x08    /* 512 / 64 */
  37.  
  38. /* for filenames */
  39. #define QNX4_SHORT_NAME_MAX    16
  40. #define QNX4_NAME_MAX        48
  41.  
  42. /*
  43.  * This is the original qnx4 inode layout on disk.
  44.  */
  45. struct qnx4_inode_entry {
  46.     char        di_fname[QNX4_SHORT_NAME_MAX];
  47.     qnx4_off_t    di_size;
  48.     qnx4_xtnt_t    di_first_xtnt;
  49.     __u32        di_xblk;
  50.     __s32        di_ftime;
  51.     __s32        di_mtime;
  52.     __s32        di_atime;
  53.     __s32        di_ctime;
  54.     qnx4_nxtnt_t    di_num_xtnts;
  55.     qnx4_mode_t    di_mode;
  56.     qnx4_muid_t    di_uid;
  57.     qnx4_mgid_t    di_gid;
  58.     qnx4_nlink_t    di_nlink;
  59.     __u8        di_zero[4];
  60.     qnx4_ftype_t    di_type;
  61.     __u8        di_status;
  62. };
  63.  
  64. struct qnx4_link_info {
  65.     char        dl_fname[QNX4_NAME_MAX];
  66.     __u32        dl_inode_blk;
  67.     __u8        dl_inode_ndx;
  68.     __u8        dl_spare[10];
  69.     __u8        dl_status;
  70. };
  71.  
  72. struct qnx4_xblk {
  73.     __u32        xblk_next_xblk;
  74.     __u32        xblk_prev_xblk;
  75.     __u8        xblk_num_xtnts;
  76.     __u8        xblk_spare[3];
  77.     __s32        xblk_num_blocks;
  78.     qnx4_xtnt_t    xblk_xtnts[QNX4_MAX_XTNTS_PER_XBLK];
  79.     char        xblk_signature[8];
  80.     qnx4_xtnt_t    xblk_first_xtnt;
  81. };
  82.  
  83. struct qnx4_super_block {
  84.     struct qnx4_inode_entry RootDir;
  85.     struct qnx4_inode_entry Inode;
  86.     struct qnx4_inode_entry Boot;
  87.     struct qnx4_inode_entry AltBoot;
  88. };
  89.  
  90. #ifdef __KERNEL__
  91.  
  92. #define QNX4_DEBUG 0
  93.  
  94. #if QNX4_DEBUG
  95. #define QNX4DEBUG(X) printk X
  96. #else
  97. #define QNX4DEBUG(X) (void) 0
  98. #endif
  99.  
  100. struct qnx4_sb_info {
  101.     struct buffer_head    *sb_buf;    /* superblock buffer */
  102.     struct qnx4_super_block    *sb;        /* our superblock */
  103.     unsigned int        Version;    /* may be useful */
  104.     struct qnx4_inode_entry    *BitMap;    /* useful */
  105. };
  106.  
  107. struct qnx4_inode_info {
  108.     struct qnx4_inode_entry raw;
  109.     loff_t mmu_private;
  110.     struct inode vfs_inode;
  111. };
  112.  
  113. extern struct dentry *qnx4_lookup(struct inode *dir, struct dentry *dentry, struct nameidata *nd);
  114. extern unsigned long qnx4_count_free_blocks(struct super_block *sb);
  115. extern unsigned long qnx4_block_map(struct inode *inode, long iblock);
  116.  
  117. extern struct buffer_head *qnx4_getblk(struct inode *, int, int);
  118. extern struct buffer_head *qnx4_bread(struct inode *, int, int);
  119.  
  120. extern struct inode_operations qnx4_file_inode_operations;
  121. extern struct inode_operations qnx4_dir_inode_operations;
  122. extern struct file_operations qnx4_file_operations;
  123. extern struct file_operations qnx4_dir_operations;
  124. extern int qnx4_is_free(struct super_block *sb, long block);
  125. extern int qnx4_set_bitmap(struct super_block *sb, long block, int busy);
  126. extern int qnx4_create(struct inode *inode, struct dentry *dentry, int mode, struct nameidata *nd);
  127. extern void qnx4_truncate(struct inode *inode);
  128. extern void qnx4_free_inode(struct inode *inode);
  129. extern int qnx4_unlink(struct inode *dir, struct dentry *dentry);
  130. extern int qnx4_rmdir(struct inode *dir, struct dentry *dentry);
  131. extern int qnx4_sync_file(struct file *file, struct dentry *dentry, int);
  132. extern int qnx4_sync_inode(struct inode *inode);
  133. extern int qnx4_get_block(struct inode *inode, sector_t iblock, struct buffer_head *bh, int create);
  134.  
  135. static inline struct qnx4_sb_info *qnx4_sb(struct super_block *sb)
  136. {
  137.     return sb->s_fs_info;
  138. }
  139.  
  140. static inline struct qnx4_inode_info *qnx4_i(struct inode *inode)
  141. {
  142.     return container_of(inode, struct qnx4_inode_info, vfs_inode);
  143. }
  144.  
  145. static inline struct qnx4_inode_entry *qnx4_raw_inode(struct inode *inode)
  146. {
  147.     return &qnx4_i(inode)->raw;
  148. }
  149.  
  150. #endif                /* __KERNEL__ */
  151.  
  152. #endif
  153.